home *** CD-ROM | disk | FTP | other *** search
- package sun.applet;
-
- import java.applet.Applet;
- import java.applet.AppletContext;
- import java.applet.AudioClip;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Frame;
- import java.awt.Image;
- import java.awt.Insets;
- import java.awt.Label;
- import java.awt.Menu;
- import java.awt.MenuBar;
- import java.awt.MenuItem;
- import java.awt.Point;
- import java.awt.Toolkit;
- import java.awt.Window;
- import java.io.BufferedInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.Vector;
- import sun.awt.image.URLImageSource;
-
- public class AppletViewer extends Frame implements AppletContext {
- public static String theVersion = "1.0.2";
- public static File theUserPropertiesFile;
- public static File theAppletViewerPropsFile;
- AppletViewerPanel panel;
- Label label;
- PrintStream statusMsgStream;
- AppletViewerFactory factory;
- static Hashtable audioHash;
- static Hashtable imgHash;
- static Vector appletPanels;
- static Hashtable systemParam;
- static AppletProps props;
- // $FF: renamed from: c int
- static int field_0;
- // $FF: renamed from: x int
- static int field_1;
- // $FF: renamed from: y int
- static int field_2;
- static boolean didInitialize;
-
- public AppletViewer(int var1, int var2, URL var3, Hashtable var4, PrintStream var5, AppletViewerFactory var6) {
- this.factory = var6;
- this.statusMsgStream = var5;
- ((Frame)this).setTitle("Applet Viewer: " + var4.get("code"));
- MenuBar var7 = var6.getBaseMenuBar();
- Menu var8 = new Menu("Applet");
- var8.add(new MenuItem("Restart"));
- var8.add(new MenuItem("Reload"));
- var8.add(new MenuItem("Clone"));
- var8.add(new MenuItem("-"));
- var8.add(new MenuItem("Tag"));
- var8.add(new MenuItem("Info"));
- var8.add(new MenuItem("Edit")).disable();
- var8.add(new MenuItem("-"));
- var8.add(new MenuItem("Properties"));
- var8.add(new MenuItem("-"));
- var8.add(new MenuItem("Close"));
- if (var6.isStandalone()) {
- var8.add(new MenuItem("Quit"));
- }
-
- var7.add(var8);
- ((Frame)this).setMenuBar(var7);
- ((Component)this).reshape(var1, var2, 400, 200);
- ((Container)this).add("Center", this.panel = new AppletViewerPanel(var3, var4));
- ((Container)this).add("South", this.label = new Label("Hello..."));
- this.panel.init();
- appletPanels.addElement(this.panel);
- ((Window)this).pack();
- ((Window)this).show();
- this.showStatus("starting applet...");
- this.panel.sendEvent(1);
- this.panel.sendEvent(2);
- this.panel.sendEvent(3);
- }
-
- static synchronized AudioClip getAudioClipFromCache(URL var0) {
- System.getSecurityManager().checkConnect(var0.getHost(), var0.getPort());
- Object var1 = (AudioClip)audioHash.get(var0);
- if (var1 == null) {
- audioHash.put(var0, var1 = new AppletAudioClip(var0));
- }
-
- return (AudioClip)var1;
- }
-
- public AudioClip getAudioClip(URL var1) {
- return getAudioClipFromCache(var1);
- }
-
- static synchronized Image getImageFromHash(URL var0) {
- System.getSecurityManager().checkConnect(var0.getHost(), var0.getPort());
- Image var1 = (Image)imgHash.get(var0);
- if (var1 == null) {
- try {
- imgHash.put(var0, var1 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var0)));
- } catch (Exception var2) {
- }
- }
-
- return var1;
- }
-
- public Image getImage(URL var1) {
- return getImageFromHash(var1);
- }
-
- public Applet getApplet(String var1) {
- AppletSecurity var2 = (AppletSecurity)System.getSecurityManager();
- var1 = var1.toLowerCase();
- Enumeration var3 = appletPanels.elements();
-
- while(var3.hasMoreElements()) {
- AppletPanel var4 = (AppletPanel)var3.nextElement();
- String var5 = var4.getParameter("name");
- if (var5 != null) {
- var5 = var5.toLowerCase();
- }
-
- if (var1.equals(var5) && var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
- try {
- var2.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
- return var4.applet;
- } catch (SecurityException var6) {
- }
- }
- }
-
- return null;
- }
-
- public Enumeration getApplets() {
- AppletSecurity var1 = (AppletSecurity)System.getSecurityManager();
- Vector var2 = new Vector();
- Enumeration var3 = appletPanels.elements();
-
- while(var3.hasMoreElements()) {
- AppletPanel var4 = (AppletPanel)var3.nextElement();
- if (var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
- try {
- var1.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
- var2.addElement(var4.applet);
- } catch (SecurityException var5) {
- }
- }
- }
-
- return var2.elements();
- }
-
- public void showDocument(URL var1) {
- }
-
- public void showDocument(URL var1, String var2) {
- }
-
- public void showStatus(String var1) {
- this.label.setText(var1);
- }
-
- static void printTag(PrintStream var0, Hashtable var1) {
- var0.print("<applet");
- String var2 = (String)var1.get("zipbase");
- if (var2 != null) {
- var0.print(" zipbase=\"" + var2 + "\"");
- }
-
- var2 = (String)var1.get("codebase");
- if (var2 != null) {
- var0.print(" codebase=\"" + var2 + "\"");
- }
-
- var2 = (String)var1.get("code");
- if (var2 == null) {
- var2 = "applet.class";
- }
-
- var0.print(" code=\"" + var2 + "\"");
- var2 = (String)var1.get("width");
- if (var2 == null) {
- var2 = "150";
- }
-
- var0.print(" width=" + var2);
- var2 = (String)var1.get("height");
- if (var2 == null) {
- var2 = "100";
- }
-
- var0.print(" height=" + var2);
- var2 = (String)var1.get("name");
- if (var2 != null) {
- var0.print(" name=\"" + var2 + "\"");
- }
-
- var0.println(">");
- int var3 = var1.size();
- String[] var4 = new String[var3];
- var3 = 0;
-
- for(Enumeration var5 = var1.keys(); var5.hasMoreElements(); ++var3) {
- String var6 = (String)var5.nextElement();
-
- int var7;
- for(var7 = 0; var7 < var3 && var4[var7].compareTo(var6) < 0; ++var7) {
- }
-
- System.arraycopy(var4, var7, var4, var7 + 1, var3 - var7);
- var4[var7] = var6;
- }
-
- for(int var14 = 0; var14 < var3; ++var14) {
- String var15 = var4[var14];
- if (systemParam.get(var15) == null) {
- var0.println("<param name=" + var15 + " value=\"" + var1.get(var15) + "\">");
- }
- }
-
- var0.println("</applet>");
- }
-
- public void updateAtts() {
- Dimension var1 = this.panel.size();
- Insets var2 = this.panel.insets();
- this.panel.atts.put("width", (new Integer(var1.width - (var2.left + var2.right))).toString());
- this.panel.atts.put("height", (new Integer(var1.height - (var2.top + var2.bottom))).toString());
- }
-
- void appletRestart() {
- this.panel.sendEvent(4);
- this.panel.sendEvent(5);
- this.panel.sendEvent(2);
- this.panel.sendEvent(3);
- }
-
- void appletReload() {
- this.panel.sendEvent(4);
- this.panel.sendEvent(5);
- this.panel.sendEvent(0);
- AppletPanel.flushClassLoader(this.panel.baseURL);
- this.panel.sendEvent(1);
- this.panel.sendEvent(2);
- this.panel.sendEvent(3);
- }
-
- void appletClone() {
- Point var1 = ((Component)this).location();
- this.updateAtts();
- this.factory.createAppletViewer(var1.x + 30, var1.y + 10, this.panel.documentURL, (Hashtable)this.panel.atts.clone());
- }
-
- void appletTag() {
- ByteArrayOutputStream var1 = new ByteArrayOutputStream();
- this.updateAtts();
- printTag(new PrintStream(var1), this.panel.atts);
- this.showStatus("Tag shown");
- Point var2 = ((Component)this).location();
- new TextFrame(var2.x + 50, var2.y + 20, "Applet HTML Tag", var1.toString());
- }
-
- void appletInfo() {
- String var1 = this.panel.applet.getAppletInfo();
- if (var1 == null) {
- var1 = "-- no applet info --";
- }
-
- var1 = var1 + "\n\n";
- String[][] var2 = this.panel.applet.getParameterInfo();
- if (var2 != null) {
- for(int var3 = 0; var3 < var2.length; ++var3) {
- var1 = var1 + var2[var3][0] + " -- " + var2[var3][1] + " -- " + var2[var3][2] + "\n";
- }
- } else {
- var1 = var1 + "-- no parameter info --";
- }
-
- Point var5 = ((Component)this).location();
- new TextFrame(var5.x + 50, var5.y + 20, "Applet Info", var1);
- }
-
- void appletEdit() {
- }
-
- public static synchronized void networkProperties() {
- if (props == null) {
- props = new AppletProps();
- }
-
- props.show();
- }
-
- void appletStart() {
- this.panel.sendEvent(3);
- }
-
- void appletStop() {
- this.panel.sendEvent(4);
- }
-
- void appletClose() {
- this.panel.sendEvent(4);
- this.panel.sendEvent(5);
- this.panel.sendEvent(0);
- this.panel.sendEvent(6);
- appletPanels.removeElement(this.panel);
- ((Frame)this).dispose();
- if (countApplets() == 0) {
- this.appletQuit();
- }
-
- }
-
- protected void appletQuit() {
- if (this.factory.isStandalone()) {
- System.exit(0);
- }
-
- }
-
- public boolean handleEvent(Event var1) {
- switch (var1.id) {
- case 201:
- this.appletClose();
- return true;
- case 203:
- this.appletStop();
- return true;
- case 204:
- this.appletStart();
- return true;
- case 503:
- case 504:
- case 505:
- case 506:
- return super.handleEvent(var1);
- case 1001:
- if ("Restart".equals(var1.arg)) {
- this.appletRestart();
- return true;
- } else if ("Reload".equals(var1.arg)) {
- this.appletReload();
- return true;
- } else if ("Clone".equals(var1.arg)) {
- this.appletClone();
- return true;
- } else if ("Tag".equals(var1.arg)) {
- this.appletTag();
- return true;
- } else if ("Info".equals(var1.arg)) {
- this.appletInfo();
- return true;
- } else if ("Edit".equals(var1.arg)) {
- this.appletEdit();
- return true;
- } else if ("Properties".equals(var1.arg)) {
- networkProperties();
- return true;
- } else if ("Close".equals(var1.arg)) {
- this.appletClose();
- return true;
- } else if (this.factory.isStandalone() && "Quit".equals(var1.arg)) {
- this.appletQuit();
- return true;
- }
- default:
- return super.handleEvent(var1);
- case 51234:
- ((Component)this).resize(((Container)this).preferredSize());
- ((Container)this).validate();
- return true;
- }
- }
-
- public static int countApplets() {
- return appletPanels.size();
- }
-
- public static void init() {
- Properties var0 = new Properties(System.getProperties());
- ((Hashtable)var0).put("acl.read", "+");
- ((Hashtable)var0).put("acl.read.default", "");
- ((Hashtable)var0).put("acl.write", "+");
- ((Hashtable)var0).put("acl.write.default", "");
- ((Hashtable)var0).put("browser", "sun.applet.AppletViewer");
- ((Hashtable)var0).put("browser.version", "1.06");
- ((Hashtable)var0).put("browser.vendor", "Sun Microsystems Inc.");
- ((Hashtable)var0).put("http.agent", "JDK/" + theVersion);
- ((Hashtable)var0).put("firewallSet", "true");
- ((Hashtable)var0).put("firewallHost", "sunweb.ebay");
- ((Hashtable)var0).put("firewallPort", "80");
- ((Hashtable)var0).put("package.restrict.access.sun", "true");
- ((Hashtable)var0).put("package.restrict.access.netscape", "true");
- ((Hashtable)var0).put("package.restrict.definition.java", "true");
- ((Hashtable)var0).put("package.restrict.definition.sun", "true");
- ((Hashtable)var0).put("package.restrict.definition.netscape", "true");
- ((Hashtable)var0).put("java.version.applet", "true");
- ((Hashtable)var0).put("java.vendor.applet", "true");
- ((Hashtable)var0).put("java.vendor.url.applet", "true");
- ((Hashtable)var0).put("java.class.version.applet", "true");
- ((Hashtable)var0).put("os.name.applet", "true");
- ((Hashtable)var0).put("os.version.applet", "true");
- ((Hashtable)var0).put("os.arch.applet", "true");
- ((Hashtable)var0).put("file.separator.applet", "true");
- ((Hashtable)var0).put("path.separator.applet", "true");
- ((Hashtable)var0).put("line.separator.applet", "true");
- var0 = new Properties(var0);
-
- try {
- FileInputStream var1 = new FileInputStream(theAppletViewerPropsFile);
- var0.load(new BufferedInputStream(var1));
- var1.close();
- } catch (Exception var3) {
- System.out.println("[no appletviewer.properties file found!]");
- }
-
- try {
- FileInputStream var5 = new FileInputStream(theUserPropertiesFile);
- var0.load(new BufferedInputStream(var5));
- var5.close();
- } catch (Exception var2) {
- }
-
- System.setProperties(var0);
- System.setSecurityManager(new AppletSecurity());
- }
-
- static void skipSpace(InputStream var0) throws IOException {
- while(field_0 >= 0 && (field_0 == 32 || field_0 == 9 || field_0 == 10 || field_0 == 13)) {
- field_0 = var0.read();
- }
-
- }
-
- static String scanIdentifier(InputStream var0) throws IOException {
- StringBuffer var1;
- for(var1 = new StringBuffer(); field_0 >= 97 && field_0 <= 122 || field_0 >= 65 && field_0 <= 90 || field_0 >= 48 && field_0 <= 57 || field_0 == 95; field_0 = var0.read()) {
- var1.append((char)field_0);
- }
-
- return var1.toString();
- }
-
- static Hashtable scanTag(InputStream var0) throws IOException {
- Hashtable var1 = new Hashtable();
- skipSpace(var0);
-
- while(field_0 >= 0 && field_0 != 62) {
- String var2 = scanIdentifier(var0);
- String var3 = "";
- skipSpace(var0);
- if (field_0 == 61) {
- int var4 = -1;
- field_0 = var0.read();
- skipSpace(var0);
- if (field_0 == 39 || field_0 == 34) {
- var4 = field_0;
- field_0 = var0.read();
- }
-
- StringBuffer var5;
- for(var5 = new StringBuffer(); field_0 > 0 && (var4 < 0 && field_0 != 32 && field_0 != 9 && field_0 != 10 && field_0 != 13 && field_0 != 62 || var4 >= 0 && field_0 != var4); field_0 = var0.read()) {
- var5.append((char)field_0);
- }
-
- if (field_0 == var4) {
- field_0 = var0.read();
- }
-
- skipSpace(var0);
- var3 = var5.toString();
- }
-
- var1.put(var2.toLowerCase(), var3);
- skipSpace(var0);
- }
-
- return var1;
- }
-
- static void parse(URL var0) throws IOException {
- parse(var0, System.out, new StdAppletViewerFactory());
- }
-
- public static void parse(URL var0, PrintStream var1, AppletViewerFactory var2) throws IOException {
- InputStream var3 = var0.openStream();
- Hashtable var4 = null;
- field_0 = var3.read();
-
- while(field_0 >= 0) {
- if (field_0 == 60) {
- field_0 = var3.read();
- if (field_0 == 47) {
- field_0 = var3.read();
- String var5 = scanIdentifier(var3);
- if (var5.equalsIgnoreCase("applet")) {
- if (var4 != null) {
- var2.createAppletViewer(field_1, field_2, var0, var4);
- field_1 += 50;
- field_2 += 20;
- Dimension var6 = Toolkit.getDefaultToolkit().getScreenSize();
- if (field_1 > var6.width - 30) {
- field_1 = 100;
- }
-
- if (field_2 > var6.height - 30) {
- field_1 = 50;
- }
- }
-
- var4 = null;
- }
- } else {
- String var9 = scanIdentifier(var3);
- if (var9.equalsIgnoreCase("param")) {
- Hashtable var12 = scanTag(var3);
- String var7 = (String)var12.get("name");
- if (var7 == null) {
- var1.println("Warning: <param name=... value=...> tag requires name attribute.");
- } else {
- String var8 = (String)var12.get("value");
- if (var8 == null) {
- var1.println("Warning: <param name=... value=...> tag requires value attribute.");
- } else if (var4 != null) {
- var4.put(var7.toLowerCase(), var8);
- } else {
- var1.println("Warning: <param> tag outside <applet> ... </applet>.");
- }
- }
- } else if (var9.equalsIgnoreCase("applet")) {
- var4 = scanTag(var3);
- if (var4.get("code") == null) {
- var1.println("Warning: <applet> tag requires code attribute.");
- var4 = null;
- } else if (var4.get("width") == null) {
- var1.println("Warning: <applet> tag requires width attribute.");
- var4 = null;
- } else if (var4.get("height") == null) {
- var1.println("Warning: <applet> tag requires height attribute.");
- var4 = null;
- }
- } else if (var9.equalsIgnoreCase("app")) {
- var1.println("Warning: <app> tag no longer supported, use <applet> instead:");
- Hashtable var13 = scanTag(var3);
- var9 = (String)var13.get("class");
- if (var9 != null) {
- var13.remove("class");
- var13.put("code", var9 + ".class");
- }
-
- var9 = (String)var13.get("src");
- if (var9 != null) {
- var13.remove("src");
- var13.put("codebase", var9);
- }
-
- if (var13.get("width") == null) {
- var13.put("width", "100");
- }
-
- if (var13.get("height") == null) {
- var13.put("height", "100");
- }
-
- printTag(var1, var13);
- var1.println();
- }
- }
- } else {
- field_0 = var3.read();
- }
- }
-
- var3.close();
- }
-
- static void usage() {
- System.out.println("use: appletviewer [-debug] url|file ...");
- }
-
- public static void mainInit() {
- if (!didInitialize) {
- didInitialize = true;
- init();
- if (!theVersion.equals(System.getProperty("appletviewer.version"))) {
- (new AppletCopyright()).waitForUser();
- }
- }
-
- }
-
- public static void main(String[] var0) {
- mainInit();
- if (var0.length == 0) {
- System.out.println("No input files specified.");
- usage();
- } else {
- for(int var1 = 0; var1 < var0.length; ++var1) {
- try {
- URL var5;
- if (var0[var1].indexOf(58) <= 1) {
- var5 = new URL("file:" + System.getProperty("user.dir").replace(File.separatorChar, '/') + "/");
- var5 = new URL(var5, var0[var1]);
- } else {
- var5 = new URL(var0[var1]);
- }
-
- parse(var5);
- } catch (MalformedURLException var3) {
- System.out.println("Bad URL: " + var0[var1] + " (" + ((Throwable)var3).getMessage() + ")");
- System.exit(1);
- } catch (IOException var4) {
- System.out.println("I/O exception while reading: " + ((Throwable)var4).getMessage());
- if (var0[var1].indexOf(58) < 0) {
- System.out.println("Make sure that " + var0[var1] + " is a file and is readable.");
- } else {
- System.out.println("Is " + var0[var1] + " the correct URL?");
- }
-
- System.exit(1);
- }
- }
-
- if (countApplets() == 0) {
- System.out.println("Warning: No Applets were started, make sure the input contains an <applet> tag.");
- usage();
- System.exit(1);
- }
-
- }
- }
-
- static {
- theUserPropertiesFile = new File(System.getProperty("user.home") + File.separator + ".hotjava" + File.separator + "properties");
- (new File(theUserPropertiesFile.getParent())).mkdirs();
- theAppletViewerPropsFile = new File(System.getProperty("java.home") + File.separator + "lib" + File.separator + "appletviewer.properties");
- audioHash = new Hashtable();
- imgHash = new Hashtable();
- appletPanels = new Vector();
- systemParam = new Hashtable();
- systemParam.put("zipbase", "zipbase");
- systemParam.put("codebase", "codebase");
- systemParam.put("code", "code");
- systemParam.put("alt", "alt");
- systemParam.put("width", "width");
- systemParam.put("height", "height");
- systemParam.put("align", "align");
- systemParam.put("vspace", "vspace");
- systemParam.put("hspace", "hspace");
- field_1 = 100;
- field_2 = 50;
- }
- }
-